package com.tarry.spi.demo;

import com.tarry.spi.initerface.Driver;

import java.util.ServiceLoader;

/**
 * SPI: 服务发现提供机制,其核心思想为“解耦”，常用于框架的拓展，如SpringBoot自定义starer的使用类似。 <br>
 * (1) 多个并发多线程使用ServiceLoader类的实例是不安全的 <br>
 * (2) 对于引入多个实现类包时，ServiceLoader会全部装载，会造成过量装载的情况。 <br>
 *
 */
public class SpiDemo {
    public static void main(String[] args) {
        // 多个并发多线程使用ServiceLoader类的实例是不安全的
        for (Driver driver : ServiceLoader.load(Driver.class)) {
            driver.loadDriver();
        }
    }
}
